package bishi.day13_5_9;

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

/**
 * 跳石板，只能跳约数
 *
 * @author 是阿秋啊
 * @date 2022/05/09 16:54
 **/
public class tiao_shi_ban {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int m = sc.nextInt();
            if (n == m) {
                System.out.println(0);
                continue;
            }
            // 定义temp数组，负责记录到该下标编号石板的步数
            int[] temp = new int[m + 1];
            // 初始化
            for (int i = 0; i < m + 1; i++) {
                temp[i] = Integer.MAX_VALUE;
            }
            temp[n] = 0;
            for (int i = n; i < m; i++) {
                if (temp[i] == Integer.MAX_VALUE) {
                    // 如果未走过第i号石板，则直接跳过
                    continue;
                }
                // 获得当前数的约数集合
                List<Integer> ret = sumYue(i);
                for (int j : ret) {
                    // 如果当前石板加上j小于目标石板
                    if (i + j <= m && temp[i + j] != Integer.MAX_VALUE) {
                        // 此时说明i+j号石板已被走过，则在之前走i+j的石板步数和i+1的石板步数取最小
                        temp[i + j] = Math.min(temp[i + j], temp[i] + 1);
                    }else if (i + j <= m) {
                        // 此时说明i + j未被走过，直接赋值即可
                        temp[i + j] = temp[i] + 1;
                    }
                }
            }
            if (temp[m] == Integer.MAX_VALUE) {
                System.out.println(-1);
            }else {
                System.out.println(temp[m]);
            }
        }
    }
    private static List<Integer> sumYue(int n) {
        List<Integer> ret = new LinkedList<>();
        for (int i = 2; i * i <= n; i++) {
            if (n % i == 0) {
                ret.add(i);
                if(n / i != i) {
                    ret.add(n / i);
                }
            }
        }
        return ret;
    }
}
